<?xml version="1.0" encoding="utf-8"?>
<xs:schema xmlns:ser="http://schemas.microsoft.com/2003/10/Serialization/" xmlns:tns="http://schemas.datacontract.org/2004/07/ShopPowerTemplate.Entities" elementFormDefault="qualified" targetNamespace="http://schemas.datacontract.org/2004/07/ShopPowerTemplate.Entities" xmlns:xs="http://www.w3.org/2001/XMLSchema">
  <xs:import schemaLocation="http://localhost:4748/WebService.svc?xsd=xsd1" namespace="http://schemas.microsoft.com/2003/10/Serialization/" />
  <xs:complexType name="Customer">
    <xs:complexContent mixed="false">
      <xs:extension base="tns:CustomerBase">
        <xs:sequence />
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>
  <xs:element name="Customer" nillable="true" type="tns:Customer" />
  <xs:complexType name="CustomerBase">
    <xs:complexContent mixed="false">
      <xs:extension base="tns:Entity">
        <xs:sequence>
          <xs:element minOccurs="0" name="Addresses" nillable="true" type="tns:ArrayOfAddress" />
          <xs:element minOccurs="0" name="Email" nillable="true" type="xs:string" />
          <xs:element minOccurs="0" name="FirstName" nillable="true" type="xs:string" />
          <xs:element minOccurs="0" name="Id" type="xs:int" />
          <xs:element minOccurs="0" name="IsInactive" nillable="true" type="xs:boolean" />
          <xs:element minOccurs="0" name="LastName" nillable="true" type="xs:string" />
          <xs:element minOccurs="0" name="Orders" nillable="true" type="tns:ArrayOfOrder" />
          <xs:element minOccurs="0" name="Reviews" nillable="true" type="tns:ArrayOfReview" />
          <xs:element minOccurs="0" name="SessionId" nillable="true" type="xs:string" />
        </xs:sequence>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>
  <xs:element name="CustomerBase" nillable="true" type="tns:CustomerBase" />
  <xs:complexType name="Entity">
    <xs:sequence />
    <xs:attribute ref="ser:Id" />
    <xs:attribute ref="ser:Ref" />
  </xs:complexType>
  <xs:element name="Entity" nillable="true" type="tns:Entity" />
  <xs:complexType name="ArrayOfAddress">
    <xs:sequence>
      <xs:element minOccurs="0" maxOccurs="unbounded" name="Address" nillable="true" type="tns:Address" />
    </xs:sequence>
  </xs:complexType>
  <xs:element name="ArrayOfAddress" nillable="true" type="tns:ArrayOfAddress" />
  <xs:complexType name="Address">
    <xs:complexContent mixed="false">
      <xs:extension base="tns:AddressBase">
        <xs:sequence />
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>
  <xs:element name="Address" nillable="true" type="tns:Address" />
  <xs:complexType name="AddressBase">
    <xs:complexContent mixed="false">
      <xs:extension base="tns:Entity">
        <xs:sequence>
          <xs:element minOccurs="0" name="AddressLine1" nillable="true" type="xs:string" />
          <xs:element minOccurs="0" name="AddressLine2" nillable="true" type="xs:string" />
          <xs:element minOccurs="0" name="City" nillable="true" type="xs:string" />
          <xs:element minOccurs="0" name="Country" nillable="true" type="xs:string" />
          <xs:element minOccurs="0" name="Customer" nillable="true" type="tns:Customer" />
          <xs:element minOccurs="0" name="Id" type="xs:int" />
          <xs:element minOccurs="0" name="IsBilling" type="xs:boolean" />
          <xs:element minOccurs="0" name="PostalCode" nillable="true" type="xs:string" />
          <xs:element minOccurs="0" name="StateProvince" nillable="true" type="xs:string" />
        </xs:sequence>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>
  <xs:element name="AddressBase" nillable="true" type="tns:AddressBase" />
  <xs:complexType name="ArrayOfOrder">
    <xs:sequence>
      <xs:element minOccurs="0" maxOccurs="unbounded" name="Order" nillable="true" type="tns:Order" />
    </xs:sequence>
  </xs:complexType>
  <xs:element name="ArrayOfOrder" nillable="true" type="tns:ArrayOfOrder" />
  <xs:complexType name="Order">
    <xs:complexContent mixed="false">
      <xs:extension base="tns:OrderBase">
        <xs:sequence />
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>
  <xs:element name="Order" nillable="true" type="tns:Order" />
  <xs:complexType name="OrderBase">
    <xs:complexContent mixed="false">
      <xs:extension base="tns:Entity">
        <xs:sequence>
          <xs:element minOccurs="0" name="Customer" nillable="true" type="tns:Customer" />
          <xs:element minOccurs="0" name="Date" type="xs:dateTime" />
          <xs:element minOccurs="0" name="Id" type="xs:int" />
          <xs:element minOccurs="0" name="OrderDetails" nillable="true" type="tns:ArrayOfOrderDetail" />
          <xs:element minOccurs="0" name="OrderState" nillable="true" type="tns:OrderState" />
          <xs:element minOccurs="0" name="Reference" nillable="true" type="xs:string" />
          <xs:element minOccurs="0" name="ShippingCost" type="xs:decimal" />
        </xs:sequence>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>
  <xs:element name="OrderBase" nillable="true" type="tns:OrderBase" />
  <xs:complexType name="ArrayOfOrderDetail">
    <xs:sequence>
      <xs:element minOccurs="0" maxOccurs="unbounded" name="OrderDetail" nillable="true" type="tns:OrderDetail" />
    </xs:sequence>
  </xs:complexType>
  <xs:element name="ArrayOfOrderDetail" nillable="true" type="tns:ArrayOfOrderDetail" />
  <xs:complexType name="OrderDetail">
    <xs:complexContent mixed="false">
      <xs:extension base="tns:OrderDetailBase">
        <xs:sequence />
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>
  <xs:element name="OrderDetail" nillable="true" type="tns:OrderDetail" />
  <xs:complexType name="OrderDetailBase">
    <xs:complexContent mixed="false">
      <xs:extension base="tns:Entity">
        <xs:sequence>
          <xs:element minOccurs="0" name="Discount" nillable="true" type="xs:decimal" />
          <xs:element minOccurs="0" name="Id" type="xs:int" />
          <xs:element minOccurs="0" name="Order" nillable="true" type="tns:Order" />
          <xs:element minOccurs="0" name="Price" type="xs:decimal" />
          <xs:element minOccurs="0" name="ProductDetail" nillable="true" type="tns:ProductDetail" />
          <xs:element minOccurs="0" name="Quantity" type="xs:int" />
          <xs:element minOccurs="0" name="Tax" type="xs:decimal" />
        </xs:sequence>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>
  <xs:element name="OrderDetailBase" nillable="true" type="tns:OrderDetailBase" />
  <xs:complexType name="ProductDetail">
    <xs:complexContent mixed="false">
      <xs:extension base="tns:ProductDetailBase">
        <xs:sequence />
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>
  <xs:element name="ProductDetail" nillable="true" type="tns:ProductDetail" />
  <xs:complexType name="ProductDetailBase">
    <xs:complexContent mixed="false">
      <xs:extension base="tns:Entity">
        <xs:sequence>
          <xs:element minOccurs="0" name="Id" type="xs:int" />
          <xs:element minOccurs="0" name="Option" nillable="true" type="tns:ArrayOfOption" />
          <xs:element minOccurs="0" name="OrderDetails" nillable="true" type="tns:ArrayOfOrderDetail" />
          <xs:element minOccurs="0" name="Product" nillable="true" type="tns:Product" />
          <xs:element minOccurs="0" name="Stock" type="xs:int" />
        </xs:sequence>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>
  <xs:element name="ProductDetailBase" nillable="true" type="tns:ProductDetailBase" />
  <xs:complexType name="ArrayOfOption">
    <xs:sequence>
      <xs:element minOccurs="0" maxOccurs="unbounded" name="Option" nillable="true" type="tns:Option" />
    </xs:sequence>
  </xs:complexType>
  <xs:element name="ArrayOfOption" nillable="true" type="tns:ArrayOfOption" />
  <xs:complexType name="Option">
    <xs:complexContent mixed="false">
      <xs:extension base="tns:OptionBase">
        <xs:sequence />
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>
  <xs:element name="Option" nillable="true" type="tns:Option" />
  <xs:complexType name="OptionBase">
    <xs:complexContent mixed="false">
      <xs:extension base="tns:Entity">
        <xs:sequence>
          <xs:element minOccurs="0" name="Description" nillable="true" type="xs:string" />
          <xs:element minOccurs="0" name="Id" type="xs:int" />
          <xs:element minOccurs="0" name="Name" nillable="true" type="xs:string" />
          <xs:element minOccurs="0" name="OptionType" nillable="true" type="tns:OptionType" />
          <xs:element minOccurs="0" name="ProductDetails" nillable="true" type="tns:ArrayOfProductDetail" />
        </xs:sequence>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>
  <xs:element name="OptionBase" nillable="true" type="tns:OptionBase" />
  <xs:complexType name="OptionType">
    <xs:complexContent mixed="false">
      <xs:extension base="tns:OptionTypeBase">
        <xs:sequence />
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>
  <xs:element name="OptionType" nillable="true" type="tns:OptionType" />
  <xs:complexType name="OptionTypeBase">
    <xs:complexContent mixed="false">
      <xs:extension base="tns:Entity">
        <xs:sequence>
          <xs:element minOccurs="0" name="Description" nillable="true" type="xs:string" />
          <xs:element minOccurs="0" name="Id" type="xs:int" />
          <xs:element minOccurs="0" name="Name" nillable="true" type="xs:string" />
          <xs:element minOccurs="0" name="Options" nillable="true" type="tns:ArrayOfOption" />
        </xs:sequence>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>
  <xs:element name="OptionTypeBase" nillable="true" type="tns:OptionTypeBase" />
  <xs:complexType name="ArrayOfProductDetail">
    <xs:sequence>
      <xs:element minOccurs="0" maxOccurs="unbounded" name="ProductDetail" nillable="true" type="tns:ProductDetail" />
    </xs:sequence>
  </xs:complexType>
  <xs:element name="ArrayOfProductDetail" nillable="true" type="tns:ArrayOfProductDetail" />
  <xs:complexType name="Product">
    <xs:complexContent mixed="false">
      <xs:extension base="tns:ProductBase">
        <xs:sequence />
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>
  <xs:element name="Product" nillable="true" type="tns:Product" />
  <xs:complexType name="ProductBase">
    <xs:complexContent mixed="false">
      <xs:extension base="tns:Entity">
        <xs:sequence>
          <xs:element minOccurs="0" name="Description" nillable="true" type="xs:string" />
          <xs:element minOccurs="0" name="Discount" nillable="true" type="xs:decimal" />
          <xs:element minOccurs="0" name="Id" type="xs:int" />
          <xs:element minOccurs="0" name="Images" nillable="true" type="tns:ArrayOfImage" />
          <xs:element minOccurs="0" name="IsInactive" nillable="true" type="xs:boolean" />
          <xs:element minOccurs="0" name="Name" nillable="true" type="xs:string" />
          <xs:element minOccurs="0" name="Price" type="xs:decimal" />
          <xs:element minOccurs="0" name="ProductDetails" nillable="true" type="tns:ArrayOfProductDetail" />
          <xs:element minOccurs="0" name="Prominent" type="xs:boolean" />
          <xs:element minOccurs="0" name="Reviews" nillable="true" type="tns:ArrayOfReview" />
          <xs:element minOccurs="0" name="Subcategory" nillable="true" type="tns:Subcategory" />
          <xs:element minOccurs="0" name="Tax" type="xs:decimal" />
          <xs:element minOccurs="0" name="Weight" nillable="true" type="xs:decimal" />
        </xs:sequence>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>
  <xs:element name="ProductBase" nillable="true" type="tns:ProductBase" />
  <xs:complexType name="ArrayOfImage">
    <xs:sequence>
      <xs:element minOccurs="0" maxOccurs="unbounded" name="Image" nillable="true" type="tns:Image" />
    </xs:sequence>
  </xs:complexType>
  <xs:element name="ArrayOfImage" nillable="true" type="tns:ArrayOfImage" />
  <xs:complexType name="Image">
    <xs:complexContent mixed="false">
      <xs:extension base="tns:ImageBase">
        <xs:sequence />
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>
  <xs:element name="Image" nillable="true" type="tns:Image" />
  <xs:complexType name="ImageBase">
    <xs:complexContent mixed="false">
      <xs:extension base="tns:Entity">
        <xs:sequence>
          <xs:element minOccurs="0" name="Data" nillable="true" type="xs:base64Binary" />
          <xs:element minOccurs="0" name="Description" nillable="true" type="xs:string" />
          <xs:element minOccurs="0" name="Id" type="xs:int" />
          <xs:element minOccurs="0" name="Name" nillable="true" type="xs:string" />
          <xs:element minOccurs="0" name="Product" nillable="true" type="tns:Product" />
          <xs:element minOccurs="0" name="SortOrder" type="xs:int" />
        </xs:sequence>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>
  <xs:element name="ImageBase" nillable="true" type="tns:ImageBase" />
  <xs:complexType name="Subcategory">
    <xs:complexContent mixed="false">
      <xs:extension base="tns:SubcategoryBase">
        <xs:sequence />
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>
  <xs:element name="Subcategory" nillable="true" type="tns:Subcategory" />
  <xs:complexType name="SubcategoryBase">
    <xs:complexContent mixed="false">
      <xs:extension base="tns:Entity">
        <xs:sequence>
          <xs:element minOccurs="0" name="Category" nillable="true" type="tns:Category" />
          <xs:element minOccurs="0" name="Description" nillable="true" type="xs:string" />
          <xs:element minOccurs="0" name="Id" type="xs:int" />
          <xs:element minOccurs="0" name="Name" nillable="true" type="xs:string" />
          <xs:element minOccurs="0" name="Products" nillable="true" type="tns:ArrayOfProduct" />
        </xs:sequence>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>
  <xs:element name="SubcategoryBase" nillable="true" type="tns:SubcategoryBase" />
  <xs:complexType name="Category">
    <xs:complexContent mixed="false">
      <xs:extension base="tns:CategoryBase">
        <xs:sequence />
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>
  <xs:element name="Category" nillable="true" type="tns:Category" />
  <xs:complexType name="CategoryBase">
    <xs:complexContent mixed="false">
      <xs:extension base="tns:Entity">
        <xs:sequence>
          <xs:element minOccurs="0" name="Description" nillable="true" type="xs:string" />
          <xs:element minOccurs="0" name="Id" type="xs:int" />
          <xs:element minOccurs="0" name="Image" nillable="true" type="xs:base64Binary" />
          <xs:element minOccurs="0" name="Name" nillable="true" type="xs:string" />
          <xs:element minOccurs="0" name="Subcategories" nillable="true" type="tns:ArrayOfSubcategory" />
        </xs:sequence>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>
  <xs:element name="CategoryBase" nillable="true" type="tns:CategoryBase" />
  <xs:complexType name="ArrayOfSubcategory">
    <xs:sequence>
      <xs:element minOccurs="0" maxOccurs="unbounded" name="Subcategory" nillable="true" type="tns:Subcategory" />
    </xs:sequence>
  </xs:complexType>
  <xs:element name="ArrayOfSubcategory" nillable="true" type="tns:ArrayOfSubcategory" />
  <xs:complexType name="ArrayOfProduct">
    <xs:sequence>
      <xs:element minOccurs="0" maxOccurs="unbounded" name="Product" nillable="true" type="tns:Product" />
    </xs:sequence>
  </xs:complexType>
  <xs:element name="ArrayOfProduct" nillable="true" type="tns:ArrayOfProduct" />
  <xs:complexType name="ArrayOfReview">
    <xs:sequence>
      <xs:element minOccurs="0" maxOccurs="unbounded" name="Review" nillable="true" type="tns:Review" />
    </xs:sequence>
  </xs:complexType>
  <xs:element name="ArrayOfReview" nillable="true" type="tns:ArrayOfReview" />
  <xs:complexType name="Review">
    <xs:complexContent mixed="false">
      <xs:extension base="tns:ReviewBase">
        <xs:sequence />
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>
  <xs:element name="Review" nillable="true" type="tns:Review" />
  <xs:complexType name="ReviewBase">
    <xs:complexContent mixed="false">
      <xs:extension base="tns:Entity">
        <xs:sequence>
          <xs:element minOccurs="0" name="Comment" nillable="true" type="xs:string" />
          <xs:element minOccurs="0" name="Customer" nillable="true" type="tns:Customer" />
          <xs:element minOccurs="0" name="Date" type="xs:dateTime" />
          <xs:element minOccurs="0" name="Id" type="xs:int" />
          <xs:element minOccurs="0" name="Product" nillable="true" type="tns:Product" />
          <xs:element minOccurs="0" name="Rating" type="xs:int" />
        </xs:sequence>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>
  <xs:element name="ReviewBase" nillable="true" type="tns:ReviewBase" />
  <xs:complexType name="OrderState">
    <xs:complexContent mixed="false">
      <xs:extension base="tns:OrderStateBase">
        <xs:sequence />
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>
  <xs:element name="OrderState" nillable="true" type="tns:OrderState" />
  <xs:complexType name="OrderStateBase">
    <xs:complexContent mixed="false">
      <xs:extension base="tns:Entity">
        <xs:sequence>
          <xs:element minOccurs="0" name="Description" nillable="true" type="xs:string" />
          <xs:element minOccurs="0" name="Id" type="xs:int" />
          <xs:element minOccurs="0" name="Name" nillable="true" type="xs:string" />
          <xs:element minOccurs="0" name="Orders" nillable="true" type="tns:ArrayOfOrder" />
        </xs:sequence>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>
  <xs:element name="OrderStateBase" nillable="true" type="tns:OrderStateBase" />
  <xs:complexType name="ArrayOfCategory">
    <xs:sequence>
      <xs:element minOccurs="0" maxOccurs="unbounded" name="Category" nillable="true" type="tns:Category" />
    </xs:sequence>
  </xs:complexType>
  <xs:element name="ArrayOfCategory" nillable="true" type="tns:ArrayOfCategory" />
  <xs:complexType name="ArrayOfOptionType">
    <xs:sequence>
      <xs:element minOccurs="0" maxOccurs="unbounded" name="OptionType" nillable="true" type="tns:OptionType" />
    </xs:sequence>
  </xs:complexType>
  <xs:element name="ArrayOfOptionType" nillable="true" type="tns:ArrayOfOptionType" />
</xs:schema>